// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

// 云函数入口函数
exports.main = async (event, context) => {
  const db = cloud.database()
  const wxContext = cloud.getWXContext()
  const openid = wxContext.OPENID
  /* 
    有4种情况
      1. 没有过注册申请
      2. 有注册申请, 且其中有待审核的注册申请
      3. 有注册申请, 且其中有通过的注册申请
      4. 有注册申请, 且都为驳回状态
      
      权重 1 > 3 > 2 > 4
  */
  const result = await db.collection('request').where({ openid }).get()
  const requests = result.data

  const hasWaitItem = (request) => request.status === 0
  const hasPassItem = (request) => request.status === 1
  const hasDenyItem = (request) => request.status === 2

  // case 1
  if (requests.length < 1) {
    return 1
  } else {
    // case 2 有待审核的
    if (requests.some(hasWaitItem)) {
      return 2
    }
    // case 3 有已经通过的
    if (requests.some(hasPassItem)) {
      return 3
    }
    // case 4 全部驳回
    if (requests.every(hasDenyItem)) {
      return 1
    }
  }
}